Various mechanisms exist to allow computers and executing software applications to interact. For example, remote procedure call (“RPC”) protocols have long existed that allow a program on one computer to cause a program on another computer to be executed. In a similar manner, various object-oriented architectures such as CORBA (“Common Object Request Broker Architecture”) and DCOM (“Distributed Component Object Model”) provide remote execution capabilities. In addition, various middleware programs have been implemented to connect separate applications (often of distinct types and from unrelated sources) to allow communication. For example, various EDI (“Electronic Data Interchange”) networks exist that provide standard mechanisms to allow a computer system of one user of the network to send data to a computer system of another user of the network.
The widespread popularity of the World Wide Web (“Web”) has provided additional opportunities for computers to inter-communicate. For example, much current Web use involves users interactively requesting Web pages from Web servers (e.g., via Web browser applications executing on user computers) and receiving the requested information in response. In addition, there is also growing use of the Web to support the programmatic interaction of remote applications to exchange information via defined APIs (“application program interfaces”), such as via Web services. Web services allow heterogeneous applications and computers to interact, and can be defined and implemented using a variety of underlying protocols and techniques. For example, some Web service implementations return data in XML (“eXtensible Markup Language”) format using HTTP (“HyperText Transport Protocol”) in response to a Web service invocation request specified as a URI (“Uniform Resource Identifier”), such as a URL (“Uniform Resource Locator”) that includes a specified operation and one or more query parameters. In other implementations, additional underlying protocols are used for various purposes, such as SOAP (“Simple Object Access Protocol”) for standard message exchange, WSDL (“Web Services Description Language”) for description of service invocations, and UDDI (“Universal Description, Discovery, and Integration service”) for discovery of available services.
Although Web services and other mechanisms allow various applications and computers to interact, various problems exist with the use of such interaction mechanisms. For example, if a developer of an application would like to incorporate the use of fee-based Web services that are available from third parties in the application, but in a manner that end users of the application will be responsible for corresponding fees, such functionality is typically difficult and costly to implement. Such functionality may include, for example, mechanisms to collect specified payments from end users, and mechanisms to distribute payments to providers of the Web services used by the application. The functionality may also include mechanisms to allow the application developer to manage and monitor the use of third-party Web services via the application, to allow end users to monitor their own use of Web services via the application, etc. In addition, the application developer will typically be liable for the Web service usage costs to the third parties if payment is not ultimately obtained from the end users.